package com.etalk.crm.service;

import com.etalk.crm.pojo.*;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * @author: Jordan
 * @date: 2019/1/3 19:11
 * @description:
 */
public interface StudentInfoService {

    /**
     * 查询学员信息卡数据
     * @param personId 学员id
     * @return 学员信息
     */
    StudentInfo searchStudentInfo(Integer personId);

    /**
     * 生成用户token String
     * @param personId 用户id
     * @return
     */
    String getStudentTokenString(int personId);

    /**
     * 查询学员信息变更记录
     * @param personId 学员id
     * @param pageNum 页码
     * @param pageSize 每页记录
     * @return 数据对象
     */
    PageInfo<StudentChangeRecord> searchStudentChangRecordByPage(Integer personId, int pageNum, int pageSize);

    /**
     * 查询et问题监控用户列表
     * @param searchKey 查询关键字
     * @param pageNum 当前页
     * @param pageSize 每页记录数
     * @return 列表
     */
    PageInfo<EtMonitoringList> searchEtMonitoringListByPage(String searchKey, int pageNum, int pageSize);

    /**
     * 添加问题用户记录
     * @param personId 用户id
     * @param content 问题内容
     * @return 记录数
     */
    int addEtMonitorPerson(int personId, String content);

    /**
     * 修改监控内容
     * @param personId 用户id
     * @param content 监控内容
     * @return 记录数
     */
    int updateEtMonitorPersonByContent(int personId, String content);

    /**
     * 修改监控状态
     * @param personId 用户id
     * @param state 是否启用监控：0否，1是
     * @return 记录数
     */
    int updateEtMonitorPersonByState(int personId, int state);

    /**
     * 删除监控记录
     * @param personId 用户id
     * @return 记录数
     */
    int delEtMonitorInfoByPersonId(int personId);

    /**
     * 查询学员老师信息
     * @param loginName 查询关键字
     * @return 用户信息
     */
    List<Person> searchPersonListBySearchKey(String loginName);

    /**
     * 查询有效的性格数据列表
     * @return
     */
    List<DispositionResult> searchDispositionList(Integer personId);

    /**
     * 成绩变化曲线图数据(学校收集成绩，期中期末考试成绩，单元测成绩，课后练习成绩)
     * @param personId 学员id
     * @return
     */
    Map<String,Object> searchAchievementInfo(Integer personId);
}
